/**
* @author Lourdes Sanchez
* @author Eugenia Jose
* @author Esteban Castro
* @author Carlos Fernandez
* @author Fernando Turon
* @version 1.0 01-05-12
*
* La clase PantallaPruebasEnCompeticion se refiere a la capa de negocio relativa al sistema de Pruebas de la aplicación
*
* @see ....
*/

package edu.uoc.tds.pec4.swingx;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

import edu.uoc.tds.pec4.common.RemotoInterface;
import edu.uoc.tds.pec4.i18n.GestorIdiomas;
import edu.uoc.tds.pec4.model.Prueba;
import edu.uoc.tds.pec4.model.TipoEstado;
import edu.uoc.tds.pec4.model.TipoRonda;
import edu.uoc.tds.pec4.model.Usuario;

/**
 *
 * @author Fernando
 */
public class PantallaPruebasEnCompeticion extends javax.swing.JDialog {
    //Definicion de los atributos
    private PantallaMenuPrincipal pantallaMenuPrincipal;
    private RemotoInterface remoto;

    private List<Prueba> listaPruebasEnCompeticion;

    //Fernando
    //Constructor de la clase que recibe por parametro el formulario desde el que se llamna y un booleano que le indica si es modal o no lo es
    public PantallaPruebasEnCompeticion(PantallaMenuPrincipal pantallaMenuPrincipal, boolean modal) {
        this.pantallaMenuPrincipal = pantallaMenuPrincipal;
        this.remoto = pantallaMenuPrincipal.getRemoto();
        this.listaPruebasEnCompeticion = new ArrayList<Prueba>();

        initComponents();
        myInitComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jToolBarraHerramientas = new javax.swing.JToolBar();
        btnExit = new javax.swing.JButton();
        jPanelPruebas = new javax.swing.JPanel();
        jScrollPanePruebas = new javax.swing.JScrollPane();
        jtablePruebas = new javax.swing.JTable();
        jbtnCerrarPruebaEnCompeticion = new javax.swing.JButton();
        jmnuBarPruebas = new javax.swing.JMenuBar();
        jmnuArchivo = new javax.swing.JMenu();
        jmnuSalir = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("eOlympics - Pruebas en Período de Competición");

        jToolBarraHerramientas.setRollover(true);

        btnExit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/Exit.png"))); // NOI18N
        btnExit.setToolTipText("Salir");
        btnExit.setFocusable(false);
        btnExit.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnExit.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnExit.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExitsalir(evt);
            }
        });
        jToolBarraHerramientas.add(btnExit);

        jtablePruebas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Id Prueba", "Prueba", "Estado de la Prueba", "Num Inscritos"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPanePruebas.setViewportView(jtablePruebas);

        javax.swing.GroupLayout jPanelPruebasLayout = new javax.swing.GroupLayout(jPanelPruebas);
        jPanelPruebas.setLayout(jPanelPruebasLayout);
        jPanelPruebasLayout.setHorizontalGroup(
            jPanelPruebasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 662, Short.MAX_VALUE)
            .addGroup(jPanelPruebasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanelPruebasLayout.createSequentialGroup()
                    .addComponent(jScrollPanePruebas, javax.swing.GroupLayout.PREFERRED_SIZE, 652, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
        );
        jPanelPruebasLayout.setVerticalGroup(
            jPanelPruebasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 336, Short.MAX_VALUE)
            .addGroup(jPanelPruebasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPanePruebas, javax.swing.GroupLayout.DEFAULT_SIZE, 336, Short.MAX_VALUE))
        );

        jbtnCerrarPruebaEnCompeticion.setText("Cerrar Prueba en Competicion");
        jbtnCerrarPruebaEnCompeticion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtnCerrarPruebaEnCompeticionActionPerformed(evt);
            }
        });

        jmnuArchivo.setText("Archivo");
        jmnuArchivo.setFont(new java.awt.Font("Tahoma", 1, 11));

        jmnuSalir.setText("Salir");
        jmnuSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jmnuSalirActionPerformed(evt);
            }
        });
        jmnuArchivo.add(jmnuSalir);

        jmnuBarPruebas.add(jmnuArchivo);

        setJMenuBar(jmnuBarPruebas);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jToolBarraHerramientas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(618, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(475, Short.MAX_VALUE)
                .addComponent(jbtnCerrarPruebaEnCompeticion)
                .addContainerGap())
            .addComponent(jPanelPruebas, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jToolBarraHerramientas, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanelPruebas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jbtnCerrarPruebaEnCompeticion)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-670)/2, (screenSize.height-474)/2, 670, 474);
    }// </editor-fold>//GEN-END:initComponents
    //Fernando
    //Metodo asociado al evento de la opcion de salir
    private void btnExitsalir(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExitsalir
        this.setVisible(false);
}//GEN-LAST:event_btnExitsalir
    //Fernando
    //Metodo asociado al evento cerrar Prueba en Competicion
    private void jbtnCerrarPruebaEnCompeticionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnCerrarPruebaEnCompeticionActionPerformed
        this.cambiarAPruebaEnClasificacion();
}//GEN-LAST:event_jbtnCerrarPruebaEnCompeticionActionPerformed

    private void jmnuSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jmnuSalirActionPerformed
        // TODO add your handling code here:
        this.setVisible(false);
    }//GEN-LAST:event_jmnuSalirActionPerformed

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                PantallaPruebas dialog = null;
                try {
                    dialog = new PantallaPruebas(new PantallaMenuPrincipal(), true);
                }

                catch (RemoteException ex) {
                    Logger.getLogger(PantallaPruebasEnCompeticion.class.getName()).log(Level.SEVERE, null, ex);
                }

                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    //Fernando
    /**
     * Método para rellenar los resultados de la participaciÃ³n en un jtable sin diferenciar por universidad
     * {pre: la clase ha de estar instanciada previamente y el objeto definido}
     * {post: establece contenidos, la valoraciÃ³n, de las celdas, informando del nÃºmero de respuestas por cada tipo de pregunta/respuesta}
     */
    public void rellenarTablaPruebas(){
        //SI existe excepcion la lanzaremos para interpretarla posteriormente
        try{
            //Definimos las variables necesarias
            int numeroFilas = 0;
            numeroFilas = this.listaPruebasEnCompeticion.size();
         
            Object datos[][] = new Object[numeroFilas][4];

            //Nos posicionamos en la primera fila
            int numeroFila = 0;
            for(Prueba prueba: this.listaPruebasEnCompeticion){
                //Inicializamos variables
                int id_prueba;
                String descripcion_prueba;
                String descripcionEstadoPrueba;
                int id_estado_prueba;
                int numero_inscritos;

                //Asignamos valores a las variables
                id_prueba = prueba.getId_prueba();
                descripcion_prueba = prueba.getDescripcion_prueba();
                numero_inscritos = this.remoto.getNumeroInscritos(id_prueba);
                id_estado_prueba = prueba.getId_estado_prueba();
                descripcionEstadoPrueba = this.remoto.getDescripcionEstadoPrueba(id_estado_prueba);

                //Asignamos valores a las celdas correspondiente
                datos[numeroFila][0] = id_prueba;
                datos[numeroFila][1] = descripcion_prueba;
                datos[numeroFila][2] = descripcionEstadoPrueba;
                datos[numeroFila++][3] = numero_inscritos;
            }

            //Definimos las variables para la cabecera de la tabla
            String textoCabecera1;
            String textoCabecera2;
            String textoCabecera3;
            String textoCabecera4;
            
            //Asignamos los valores del Gesto de Idiomas
            textoCabecera1 = GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.textoCabecera1");
            textoCabecera2 = GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.textoCabecera2");
            textoCabecera3 = GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.textoCabecera3");
            textoCabecera4 = GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.textoCabecera4");

            this.jtablePruebas.setModel(new javax.swing.table.DefaultTableModel(
                datos,
                new String [] {
                    textoCabecera1, textoCabecera2, textoCabecera3, textoCabecera4
                }
            ){
                Class[] types = new Class [] {
                    java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class
                };
                boolean[] canEdit = new boolean [] {
                    false, false, false, false
                };

                public Class getColumnClass(int columnIndex) {
                    return types [columnIndex];
                }

                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return canEdit [columnIndex];
                }
            });
        }

        //En el caso en que se capture una excepcion de caracter general se informa de ello
        catch(Exception exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.error.remote"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para cambiar el estado a una prueba en Competicion
    private void cambiarAPruebaEnClasificacion(){
        //Declaramos las variables a emplear
        int fila = 0;
        int id_prueba = 0;
        Prueba prueba = null;
        TipoEstado tipoEstado = null;
        TipoRonda tipoRonda = null;

        //Recuperamos la fila seleccionada
        fila = this.jtablePruebas.getSelectedRow();

        //Asumimos que todos los inscritos se presentan a las pruebas
        try {
            //Recuperamos el id de la prueba de la fila seleccionada y obtenemos el
            //  objeto correspondiente
            id_prueba = (Integer) this.jtablePruebas.getValueAt(fila,0);
            prueba = this.remoto.getPrueba(id_prueba);

            //Se pregunta si se desea realizar el cambio
            if(JOptionPane.showConfirmDialog(null, GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.preguntaCambioAClasificacion"), GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.informacion"), JOptionPane.INFORMATION_MESSAGE) == JOptionPane.YES_OPTION){
                //Si es una competicion clasificatoria la clasificacion sera preliminar
                if(prueba.getId_estado_prueba() == TipoEstado.COMPETICION_CLASIFICATORIA.valor()){
                    tipoEstado = TipoEstado.CLASIFICACION_PRELIMINAR;
                    tipoRonda = TipoRonda.CLASIFICATORIA;
                }

                //Si es una competicion es eliminatoria la clasificacion sera eliminatoria
                else if(prueba.getId_estado_prueba() == TipoEstado.COMPETICION_ELIMINATORIA.valor()){
                    tipoEstado = TipoEstado.CLASIFICACION_FINAL;
                    tipoRonda = TipoRonda.ELIMINATORIA;
                }
                //Actualizamos el estado de la prueba
                this.actualizarPrueba(prueba,tipoEstado);
                
                Usuario usuario = new Usuario();
                usuario = this.pantallaMenuPrincipal.getUsuario();
                this.cerrarRonda(prueba, tipoRonda, usuario);
                //Actualizamos la informacion por pantalla
                this.getListaPruebasEnCompeticion();
                this.rellenarTablaPruebas();
                //Calculamos la nota de la particpacion de cada estudiante en la ronda
                this.valorarParticipacionEnRonda(prueba, tipoEstado);
                this.ordenarInscripcionRondaPorPuntuacionYFecha(prueba, tipoRonda);
            }
        }

        //En el caso en que el valor del idprueba este fuera de rango
        catch(ArrayIndexOutOfBoundsException exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.ElijaUnaPrueba"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch(Exception exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para obtener una lista de las pruebas en competicion
    private void getListaPruebasEnCompeticion(){
        //En el caso en que se genere una excepcion la capturaremos
        try{
            //Eliminamos el contenido de la lista
            this.listaPruebasEnCompeticion.clear();
            
            //Definimos dos  listas que rellenaremso una con las pruebas en competicion clasificatoria 
            //   y otra con la competicion eliminatoria
            List<Prueba> listaPruebasEnCompeticionClasificatoria = new ArrayList<Prueba>();
            List<Prueba> listaPruebasEnCompeticionEliminatoria = new ArrayList<Prueba>();

            listaPruebasEnCompeticionClasificatoria = this.remoto.getListaPruebasPorEstado(TipoEstado.COMPETICION_CLASIFICATORIA);
            listaPruebasEnCompeticionEliminatoria = this.remoto.getListaPruebasPorEstado(TipoEstado.COMPETICION_ELIMINATORIA);

            //Si la lista temporal de pruebas clasificiatorias NO esta vacia la vamos añadiento a la lista definitiva
            if(!listaPruebasEnCompeticionClasificatoria.isEmpty()){
                for(Prueba p: listaPruebasEnCompeticionClasificatoria){
                    this.listaPruebasEnCompeticion.add(p);
                }
            }

            //Si la lista temporal de pruebas eliminatorias NO esta vacia la vamos añadiento a la lista definitiva
            if(!listaPruebasEnCompeticionEliminatoria.isEmpty()){
                for(Prueba p: listaPruebasEnCompeticionEliminatoria){
                    this.listaPruebasEnCompeticion.add(p);
                }
            }
        }
        
        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch(Exception exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para actualizar el estado de una prueba que se pasa por parametro y el nuevo tipoEstado
    private void actualizarPrueba(Prueba prueba, TipoEstado tipoEstado){
        //Actualizamos la prueba en el servidor remoto y si hay alguna excepcion la capturaremos mas abajo
        try {
            this.remoto.actualizarPrueba(prueba, tipoEstado);
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch(Exception exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para actualizar el estado de una prueba que se pasa por parametro y el nuevo tipoEstado
    private void cerrarRonda(Prueba prueba, TipoRonda tipoRonda, Usuario usuario){
        //Actualizamos la prueba en el servidor remoto y si hay alguna excepcion la capturaremos mas abajo
        try {
            this.remoto.cerrarRonda(prueba, tipoRonda, usuario);
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch(Exception exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para valorar la participacion de los estudiantes inscritos en una prueba
    private void valorarParticipacionEnRonda(Prueba prueba, TipoEstado tipoEstado){
        //Valoramos la participacion. Si hay alguna excepcion la capturaremos mas abajo
        try {
            this.remoto.valorarParticipacionEnRonda(prueba, tipoEstado);
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,exc.detail, GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch(Exception exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para ordenar la clasificacion de los inscritos en una prueba por los siguientes criterios:
    //   la puntuacion, en sentido descendente
    //   la fecha de realziacion de la prueba, se premia la rapidez a la hora de contestr,
    //      por tanto el orden es descendente
    private void ordenarInscripcionRondaPorPuntuacionYFecha(Prueba prueba, TipoRonda tipoRonda){
        //Ordenamos segun los criterios. Si hay alguna excepcion la capturaremos mas abajo
        try {
            this.remoto.ordenarInscripcionRondaPorPuntuacionYFecha(prueba, tipoRonda);
        }

        //Si la excepcion capturada tiene que ver con el servidor remoto
        catch (RemoteException exc) {
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.error.remote"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch(Exception exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    //Fernando
    //Metodo para inicializar mis componentes
    private void myInitComponents(){
        try {
            this.getListaPruebasEnCompeticion();
            this.rellenarTablaPruebas();

           //Llamando al gestor de idiomas para los menus
            this.jmnuArchivo.setText(GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.MenuArchivo"));
            this.jmnuSalir.setText(GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.MenuArchivoSalir"));

            this.btnExit.setToolTipText(GestorIdiomas.getMessage("btnExit.tooltiptext"));

            this.setTitle(GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.Titulo"));
        }

        //Capturamos la excepcion en el caso en que sea de caracter general
        catch(Exception exc){
            exc.printStackTrace();
            JOptionPane.showMessageDialog(this,GestorIdiomas.getMessage("pantallaPruebasEnCompeticion.errorgeneral"), GestorIdiomas.getMessage("error"), JOptionPane.ERROR_MESSAGE);
        }
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnExit;
    private javax.swing.JPanel jPanelPruebas;
    private javax.swing.JScrollPane jScrollPanePruebas;
    private javax.swing.JToolBar jToolBarraHerramientas;
    private javax.swing.JButton jbtnCerrarPruebaEnCompeticion;
    private javax.swing.JMenu jmnuArchivo;
    private javax.swing.JMenuBar jmnuBarPruebas;
    private javax.swing.JMenuItem jmnuSalir;
    private javax.swing.JTable jtablePruebas;
    // End of variables declaration//GEN-END:variables

}
